G_CALLBACK (gtk_text_view_handle_dragged), text_view);
g_signal_connect (priv->text_handle, "drag-finished",
G_CALLBACK (gtk_text_view_handle_drag_finished), text_view);
+}
+
+static void
+_gtk_text_view_ensure_magnifier (GtkTextView *text_view)
+{
+ GtkTextViewPrivate *priv = text_view->priv;
+
+ if (priv->magnifier_popover)
+ return;
- priv->magnifier = _gtk_magnifier_new (widget);
+ priv->magnifier = _gtk_magnifier_new (GTK_WIDGET (text_view));
gtk_widget_set_size_request (priv->magnifier, 100, 60);
_gtk_magnifier_set_magnification (GTK_MAGNIFIER (priv->magnifier), 2.0);
- priv->magnifier_popover = gtk_popover_new (widget);
+ priv->magnifier_popover = gtk_popover_new (GTK_WIDGET (text_view));
gtk_style_context_add_class (gtk_widget_get_style_context (priv->magnifier_popover),
GTK_STYLE_CLASS_OSD);
gtk_popover_set_modal (GTK_POPOVER (priv->magnifier_popover), FALSE);
if (priv->selection_bubble)
gtk_widget_destroy (priv->selection_bubble);
- gtk_widget_destroy (priv->magnifier_popover);
+ if (priv->magnifier_popover)
+ gtk_widget_destroy (priv->magnifier_popover);
g_object_unref (priv->text_handle);
g_object_unref (priv->im_context);
GtkTextViewPrivate *priv;
GtkAllocation allocation;
+ _gtk_text_view_ensure_magnifier (text_view);
gtk_widget_get_allocation (GTK_WIDGET (text_view), &allocation);
priv = text_view->priv;
GtkTextView *text_view)
{
gtk_text_view_selection_bubble_popup_set (text_view);
- gtk_widget_hide (text_view->priv->magnifier_popover);
+
+ if (text_view->priv->magnifier_popover)
+ gtk_widget_hide (text_view->priv->magnifier_popover);
}
static void
priv->grab_device);
priv->grab_device = NULL;
- gtk_widget_hide (priv->magnifier_popover);
+ if (priv->magnifier_popover)
+ gtk_widget_hide (priv->magnifier_popover);
return TRUE;
}